This relates generally to video processing and particularly to techniques for compressing video for transmission.
Video applications can be computationally expensive. Designers may compress video data to reduce computations associated with video data and to reduce the bandwidth required to transmit video data. For example, compression algorithms may take advantage of a high degree of correlation between successive video frames. One such technique is called motion estimation.
With motion estimation, a reference image, which is a previously encoded frame, may be subdivided into blocks of pixels, such as blocks of 4×4 or 16×16 pixels. An encoding algorithm matches this block to another block that is within a search window of a current frame.
When the best match between blocks in the reference and current frames is identified, a motion vector captures the movement of the block from the reference frame to the current frame. This motion vector may be encoded in lieu of encoding both frames. As a result, bandwidth and computation overhead may be reduced.
One method for determining how closely two blocks match one another is called the sum of absolute differences (SAD). For every search step within the search window of a macroblock in the reference frame, the SAD for the 256 pixels of the block is computed. The search may be continued until the best match with the lowest SAD is obtained. This operation may repeat for every macroblock in the reference frame. For high resolution video, the method requires computing the motion vector for thousands of macroblocks per second. Consequently, motion estimation is computationally expensive. Other techniques for determining the best matching block include the Haar transform and the Hadamard transform.